import minimist from 'minimist'
import { UseOptions } from '../../interface/cmd'
import { getHelp, getUse } from './log'
/**
 * 命令执行函数
 */
export function command() {
  // 获取参数
  const argv = minimist(process.argv.slice(2), {
    alias: {
      baseUrl: 'b', //生成baseurl路径
      mock: 'm', // 是否开启mock
      path: 'p', // 指定生成的路径
      help: 'h', // 帮助
      js: 'j', // 编译成js
      ts: 'ts', // 编译成ts
      t: 'tags', // 制定编译的tags
      version: 'v' // 版本
    },
    string: ['baseUrl', 'path', 'v', 't'],
    boolean: ['mock', 'js', 'ts', 'u'],
    default: {
      baseUrl: '/api',
      mock: false,
      path: 'test/api/',
      help: '',
      js: false,
      ts: true,
      u: false,
      v: '',
      t: 'default'
    }
  })
  const option: UseOptions = {
    baseUrl: argv.baseUrl,
    mock: argv.mock,
    path: argv.path,
    js: argv.js,
    ts: !argv.js,
    t: argv.t,
    resKey: '200'
  }
  if (argv.h) {
    getHelp()
    process.exit(1)
  }
  // 获取指定文件（只能单文件）
  const { _: files } = argv
  if (!files.length) {
    getUse('make sure you have entered the file path')
    process.exit(1)
  }
  if (files.length > 1) {
    // 只能指定一个文件
    getUse('only accept single file')
    process.exit(1)
  }
  const scourePath = files[0]

  return {
    scourePath,
    option
  }
}
